Cross-Site Request Forgery (CSRF) হলো একটি সাইবার আক্রমণ যেখানে আক্রমণকারী একটি ব্যবহারকারীর অনুমতি ছাড়া তার ওয়েব অ্যাপ্লিকেশনে ক্ষতিকারক কার্যক্রম সম্পাদন করতে পারে। এই আক্রমণ সাধারণত ঘটে যখন একটি ব্যবহারকারী লগ ইন অবস্থায় থাকে এবং আক্রমণকারী একটি অননুমোদিত রিকোয়েস্ট পাঠানোর মাধ্যমে তার পক্ষ থেকে অপারেশন সম্পন্ন করে। এই আক্রমণ প্রতিরোধে ASP.NET Web Forms বেশ কিছু উপায় প্রদান করে, যার মধ্যে রয়েছে Anti-Forgery Tokens এবং অন্যান্য নিরাপত্তা ব্যবস্থা।
CSRF আক্রমণের মধ্যে আক্রমণকারী একটি malicious request তৈরি করে এবং একটি ইতিমধ্যে লগিন করা ব্যবহারকারীর পক্ষ থেকে সেই রিকোয়েস্টটি সম্পন্ন করার জন্য তৈরি করে। এই রিকোয়েস্টটি সাধারণত কোন সার্ভারে উপযুক্ত প্রমাণীকরণ বা অনুমোদন ছাড়াই করা হয়, কারণ ব্যবহারকারী ইতিমধ্যেই লগ ইন অবস্থায় থাকে এবং তার ব্রাউজারে সেশন কুকি সেভ করা থাকে।
ASP.NET Web Forms এ CSRF প্রতিরোধের জন্য বেশ কয়েকটি কার্যকরী কৌশল রয়েছে। এর মধ্যে অন্যতম হল Anti-Forgery Token ব্যবহার করা। এই টোকেনের মাধ্যমে প্রতিটি রিকোয়েস্টের সাথে একটি অনন্য নিরাপত্তা টোকেন যুক্ত করা হয়, যা সার্ভারে যাচাই করা হয়। যদি টোকেনটি সঠিক না হয়, তবে রিকোয়েস্টটি বাতিল করা হয়।
ASP.NET Web Forms এ CSRF আক্রমণ থেকে রক্ষা পেতে Anti-Forgery Token ব্যবহার করা যেতে পারে। এই টোকেন একটি বিশেষ সিকিউরিটি টোকেন যা ফর্ম সাবমিট করার সময় ব্যবহারকারীর সেশন বা কুকির সাথে যুক্ত করা হয়। যদি এটি খারাপ বা অনুপস্থিত থাকে, তবে রিকোয়েস্টটি বাতিল হয়ে যায়।
ASP.NET Web Forms এ Anti-Forgery Token বাস্তবায়ন করার জন্য, একটি গোপন টোকেন তৈরি করতে হবে এবং তারপর সেটি ফর্মের সাথে পাঠাতে হবে। এতে টোকেনটি প্রতিটি রিকোয়েস্টের সাথে সঠিকভাবে যাচাই করা যাবে।
প্রথমে, ফর্মের জন্য একটি hidden field তৈরি করতে হবে যা অ্যান্টি-ফর্গারি টোকেন ধারণ করবে।
<form id="form1" runat="server">
<asp:HiddenField ID="antiForgeryToken" runat="server" />
<input type="submit" value="Submit" />
</form>
ফর্ম সাবমিটের পর, code-behind ফাইলে টোকেনের যাচাই করতে হবে।
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
string submittedToken = Request.Form["antiForgeryToken"];
string sessionToken = Session["antiForgeryToken"] as string;
if (submittedToken != sessionToken)
{
// CSRF আক্রমণ শনাক্ত হয়েছে
Response.Write("Potential CSRF attack detected!");
}
else
{
// ফর্ম ডাটা প্রসেস করা হবে
}
}
}
protected void Page_PreRender(object sender, EventArgs e)
{
string token = Guid.NewGuid().ToString();
Session["antiForgeryToken"] = token;
antiForgeryToken.Value = token; // Token ফর্মের hidden field এ সেট করা হবে
}
SameSite Cookies: Web Forms অ্যাপ্লিকেশনগুলোতে SameSite cookie সেট করা যেতে পারে, যাতে কুকি শুধুমাত্র সেই ডোমেইন থেকে রিকোয়েস্ট পাঠানোর সময় পাঠানো হয়, যা কুকির মালিক।
উদাহরণস্বরূপ:
HttpCookie cookie = new HttpCookie("userSession");
cookie.SameSite = SameSiteMode.Strict;
Response.Cookies.Add(cookie);
Cross-Site Request Forgery (CSRF) আক্রমণ থেকে সুরক্ষিত থাকার জন্য ASP.NET Web Forms এ Anti-Forgery Token এর ব্যবহার একটি অত্যন্ত কার্যকরী পদ্ধতি। এর মাধ্যমে একটি অনন্য সিকিউরিটি টোকেন তৈরি করা হয়, যা ফর্ম সাবমিটের সময় যাচাই করা হয় এবং যদি সঠিক না হয় তবে রিকোয়েস্ট বাতিল হয়ে যায়। এছাড়া, SameSite Cookies, Re-authentication, এবং Referer Header Validation এর মতো অন্যান্য নিরাপত্তা পদ্ধতিগুলোও CSRF আক্রমণ প্রতিরোধে সাহায্য করে।
common.read_more